package com.qkjia.springselltest.jline;

import org.springframework.shell.standard.ShellComponent;
import org.springframework.shell.standard.ShellMethod;
import org.springframework.stereotype.Component;
//自定义参数转换
//从文本输入到实际方法参数的转换使用了标准的Spring转换机制。 Spring Shell安装一个新的(启用了内置转换器)并向它注册任何类型的bean
// ，或者在应用程序上下文中找到的bean。 DefaultConversionServiceConverter < S T > GenericConverterConverterFactory < S T >
//
//这意味着对自定义类型的对象进行自定义转换非常容易:只需在上下文中安装一个bean。 FooConverter <字符串Foo >

/*
@ShellComponent
class ConversionCommands {

        @ShellMethod("Shows conversion using Spring converter")
        public String conversionExample(DomainObject object) {
                return object.getClass();
        }

}

class DomainObject {
        private final String value;

        DomainObject(String value) {
                this.value = value;
        }

        public String toString() {
                return value;
        }
}

@Component
class CustomDomainConverter implements Converter<String, DomainObject> {

        @Override
        public DomainObject convert(String source) {
                return new DomainObject(source);
        }
}*/
//注意字符串表示
//        就像上面的例子一样，如果您能让您的实现返回用于创建对象实例的相反内容，这可能是一个好主意。 这是因为当一个值验证失败时，Spring Shell printstoString()
//                没有满足下列限制条件:
//        ——arg <type>: <message> (You passed '<value.toString()>')  有关更多信息，请参见验证命令参数。
//        如果您想要进一步自定义，您可以选择conversionservice
//        是否将默认值注入到代码中，并以某种方式对其进行操作
//        用你自己的方法覆盖它(自定义转换器需要手动注册)。 Spring Shell使用的ConversionService需要限定为“Spring - Shell”。
